/***
 * 退换货管理. <br/>
 * return, exchange -- 退换货.<br/>
 *
 * @author fsl-gonglong-20151104
 */
$(function () {

    var defaultPagingObj = {
        total : 0,
        pageSize : 10,
        page : 0
    };

    PAGE_DATA.pagingObj = $.extend(defaultPagingObj, PAGE_DATA.pagingObj);

    // 渲染页面-通用部分；
    commTemplUtil.initPage();
    // 渲染左侧菜单;
    commTemplUtil.initCommLeftMemu();

    $("#commTabs_1").commNavTabs();
    commTemplUtil.setLeftMenu(5);
    
    // 页面首次 渲染.
    renderPage();

});

/**
 * 页面初始化时, 渲染 "退换货"列表.<br/>
 *
 * @author fsl-gongl-20151104
 *
 */
function renderPage() {
    var listData = PAGE_DATA.tab_datas || [];
    renderTabs(listData);

    // 时间-jquery-UI.
    $(".sel-order-time-1, .sel-order-time-2").datepicker();

    // 搜索
    $(".sel-search-btn").each(function () {
        $(this).on("click", function () {
            getReturnExchangeData(1, $(this).parents(".body-item"));
        });
    });
};

/**
 * 渲染所有tab.<br/>
 *
 * @author fsl-gonglong-20151104
 */
function renderTabs(data) {

    var tmplObj = _.template($("#item-template").html());
    var selectTemp = " <option value=''>请选择</option> <%  _.each(obj, function(item){ %> <option value='<%=item.code %>'><%=item.text %> </option> <% }); %>";
    var selTemplObj = _.template(selectTemp);

    var onClickObj = {};

    // 初始化各tab内容.
    for (var i = 0, len = data.length; i < len; i++) {

        onClickObj = {
            onClick : function () {
                var clickPage = $(this).attr("data-page");
                var tabObj = $(this).parents(".body-item");
                getReturnExchangeData(parseInt(clickPage), tabObj);
            }
        };

        // 数据列表.
        renderDataList("#tab-body-" + i,
            data[i].detail || [],
            tmplObj);

        // 状态-下拉列表
        $("#select-" + i).html(selTemplObj(data[i].searchState || []));

        // 翻页控件.
        var tmpConf = $.extend(data[i].pagingObj || {}, onClickObj);
        commTemplUtil.initPaging("#comm-paging-" + i, tmpConf);
    }
};

/**
 * 渲染 退换货列表.<br/>
 *
 * @param containerId {string} 包含列表的容器标签<br/>
 * @param data {array} 退换货列表数据.
 * @param templ {object} 退换货模板
 *
 * @author fsl-gong-20151104
 *
 */
function renderDataList(containerId, data, templ) {

    var tmpHtml = templ(data);
    var containObj = $(containerId).find(".container");
    containObj.html(tmpHtml);

    // 绑定事件- 退货受理.
    containObj.find(".sel-accept-btn").on("click", function () {

        // 退货编号.
        var serialNum = $(this).parent().attr("serial-num");
        // 订单编号.
        var orderNum = $(this).parent().attr("order-num");
        // 当前页.
        var currentPage = containObj.find(".comm-paging").attr("current-page");

        UpdateData(serialNum, orderNum, currentPage, "2");

    });

    // 绑定事件- 确认退款.
    containObj.find(".sel-rebate-btn").on("click", function () {

        // 退货编号.
        var serialNum = $(this).parent().attr("serial-num");
        // 订单编号.
        var orderNum = $(this).parent().attr("order-num");
        // 当前页.
        var currentPage = containObj.find(".comm-paging").attr("current-page");

        UpdateData(serialNum, orderNum, currentPage, "1");

    });

    // 绑定事件- 拒绝退款
    containObj.find(".sel-reject-btn").on("click", function () {

        // 退货编号.
        var serialNum = $(this).parent().attr("serial-num");
        // 订单编号.
        var orderNum = $(this).parent().attr("order-num");
        // 当前页.
        var currentPage = containObj.find(".comm-paging").attr("current-page");

        UpdateData(serialNum, orderNum, currentPage, "0");

    });
};

/**
 * 获取 退换货数据列表.
 *
 * @author fsl-gongl-20151104.
 */
function getReturnExchangeData(page, tab) {

    var tmplObj = _.template($("#item-template").html());

    var goodNameVal = tab.find("input[name='goodName']").val() || "";
    var time1 = tab.find("input.sel-order-time-1").val() || "";
    var time2 = tab.find("input.sel-order-time-2").val() || "";
    var stateVal = tab.find("select").val() || "";
    var tabStatus = tab.find(".sel-status").val() || "";

    // 检索条件-日期-合法性验证.
    if (!(time1 == "" || time2 == "")) {
        // 只有输入两个时间 才需要判断 时间合法性.
        var chkFlag = commTemplUtil.checkDate(time1, time2);

        if (!chkFlag) {
            // 不合法--date1 > date2
            commTemplUtil.showErrorDialog({
                title : "注意",
                message : "请检查时间先后顺序!",
                ok_txt : "确定"
            });
            return false;
        }
    }

    var onClickObj = {
        onClick : function () {
            var clickPage = $(this).attr("data-page");
            var tabObj = $(this).parents(".body-item");
            getReturnExchangeData(parseInt(clickPage), tabObj);
        }
    };

    $.ajax({
        url : PAGE_CONFIG.requestUrl.getReturnExchangeDataS13,
        type : "get",
        data : {
            page : page,
            pageSize : PAGE_DATA.pagingObj.pageSize || 10,
            tab : tabStatus,
            goodName : goodNameVal,
            startTime : time1,
            endTime : time2,
            state : stateVal
        },
        success : function (result) {

            var listData = result.data || [];

            renderDataList("#" + tab.attr("id"), listData, tmplObj);

            var tmpConf = $.extend(result.pagingObj || {}, onClickObj);
            commTemplUtil.initPaging("#" + tab.find(".comm-paging").attr("id"), tmpConf);

        },
        error : function (result) {

            // 获取数据失败.
            commTemplUtil.showErrorDialog({
                title : "注意！",
                message : "获取数据失败！",
                ok_txt : "确定"
            });

            renderDataList("#" + tab.attr("id"), [], tmplObj);
            commTemplUtil.initPaging("#" + tab.find(".comm-paging").attr("id"), {
                total : 0,
                pageSize : 0,
                page : 0
            });
        }

    });

};

/**
 * 更新退换货数据。<br/>
 *
 * @param serialNum {string} 退货编号.
 * @param orderNum {string} 订单编号.
 * @param page {string} 当前页.
 * @param operStatus {string} 操作类型.  "0"-拒绝退款, "1"-确认退款, "2"-退货受理;
 *
 * @author fsl-gonglong-20151105
 *
 */
function UpdateData(serialNum, orderNum, page, operStatus) {
    $.ajax({
        url : PAGE_CONFIG.requestUrl.updReturnExchangeDataS13,
        type : "put",
        data : {
            page : page || 1,
            pageSize : PAGE_DATA.pagingObj.pageSize || 10,
            serial : serialNum || "",
            orderId : orderNum || "",
            operate : operStatus || "",
            _token : COMM_DATA.csrfToken
        },
        success : function (result) {
            var listData = result.data || [];
            renderTabs(listData);
        },
        error : function (result) {

            commTemplUtil.showErrorDialog({
                title : "注意！",
                message : "操作失败！",
                ok_txt : "确定"
            });
        }

    });
};